const isPdfFile = (file: any) => {
  return new Promise((resolve) => {
    const reader = new FileReader();
    reader.onload = (e: any) => {
      const arrayBuffer = e.target.result;
      const dataView = new DataView(arrayBuffer);
      const header = String.fromCharCode(
        dataView.getUint8(0),
        dataView.getUint8(1),
        dataView.getUint8(2),
        dataView.getUint8(3)
      );
      console.log(header);
      resolve(header === "%PDF");
    };
    reader.readAsArrayBuffer(file.slice(0, 4)); // 读取前4个字节
  });
};

export const getFileType = async (event: any) => {
  const file = event.target.files[0];
  let filetype = "";

  if (file) {
    const reason = await isPdfFile(file);
    console.log(reason);

    filetype = `
          <p>文件名: ${file.name}</p>
          <p>文件大小: ${file.size} 字节</p>
          <p>文件类型: ${file.type}</p>
          <p>最后修改时间: ${new Date(file.lastModified).toLocaleString()}</p>
        `;
    // 判断文件类型
    if (file.type === "text/plain") {
      filetype += "<p>这是一个文本文件 (.txt)。</p>";
    } else if (file.type.startsWith("image/")) {
      filetype += "<p>这是一个图片文件。</p>";
    } else if (file.type.startsWith("audio/")) {
      filetype += "<p>这是一个音频文件。</p>";
    } else if (file.type.startsWith("video/")) {
      filetype += "<p>这是一个视频文件。</p>";
    } else {
      filetype += "<p>这是一个其他类型的文件。</p>";
    }
  } else {
    filetype = "<p>未选择文件。</p>";
  }
  /*
  注意事项
  MIME 类型为空：

  如果 file.type 为空，说明浏览器无法识别文件的 MIME 类型。在这种情况下，扩展名是判断文件类型的主要依据。
  扩展名的可靠性：

  虽然扩展名通常可以用来判断文件类型，但用户可以手动更改文件扩展名。因此，扩展名并不是绝对可靠的判断依据。
  如果需要更高的可靠性，可以结合文件的内容（如文件头）进行进一步判断。
  文件头检测：

  对于某些文件类型（如 PDF、DOCX、XLSX 等），可以通过读取文件的前几个字节（文件头）来进一步验证文件类型。例如，PDF 文件的文件头通常是 %PDF-。
*/
  console.log(filetype);
};